require.config({
    paths: {
        'columntoggle': '../addons/facrm/js/columntoggle',
    }
});
var index=1;
define(['jquery', 'bootstrap', 'backend', 'table', 'form','columntoggle'], function ($, undefined, Backend, Table, Form,Columntoggle) {

    var Controller = {
        index: function (params) {
            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: params?params.index_url:'facrm/contract/receivables/index',
                    add_url: 'facrm/contract/receivables/add',
                    edit_url: 'facrm/contract/receivables/edit',
                    del_url: 'facrm/contract/receivables/del',
                    multi_url: '',
                    table: '',
                }
            });

            var table = $("#receivables");
            //在普通搜索渲染后
            table.on('post-common-search.bs.table', function (event, table) {
                $(".commonsearch-table select[name=scene_id]").val( params?params.scene_id:'all');
            });
            var columnss=   [
                {field: 'id', title: 'ID'},
                {
                    field: 'scene_id',
                    title: __('场景'),
                    visible: false,
                    formatter: function (v, r) {
                        return scene_list[v];
                    }, searchList: scene_list
                },
                {field: 'number', title: __('回款编号'), operate: "LIKE",  align: 'left', formatter : function (value, row, index) {
                        return '<a href="javascript:void(0);" data-url="facrm/contract/receivables/detail/ids/' + row.id
                            +'" data-area="[&quot;100%&quot;,&quot;100%&quot;]" class="btn-dialog" data-title="详情:'+ value+'">'+ value+'</a>';
                    }},
                {field: 'contract_id', title: __('合同编号'),  align: 'left', formatter : function (value, row, index) {
                        if (!row.contract) return '-';
                        return '<a href="javascript:void(0);" data-url="facrm/contract/index/detail/ids/' + row.contract_id
                            +'" data-area="[&quot;100%&quot;,&quot;100%&quot;]" class="btn-dialog" data-title="合同详情:'+  row.contract.number+'">'+ row.contract.number+'</a>';
                    },
                    addclass: 'selectpage',
                    extend: 'data-source="facrm/contract/index/selectpage" data-field="name"'},
                {field: 'contract.name', title: __('合同名称'),  align: 'left', formatter : function (value, row, index) {
                        if (!row.contract) return '-';
                        return '<a href="javascript:void(0);" data-url="facrm/contract/index/detail/ids/' + row.contract_id
                            +'" data-area="[&quot;100%&quot;,&quot;100%&quot;]" class="btn-dialog" data-title="合同详情:'+  row.contract.name+'">'+ row.contract.name+'</a>';
                    }},


                {field: 'customer_id', title: __('客户名称'), search: false,  align: 'left', formatter : function (value, row, index) {
                        if (!row.customer) return '-';
                        return '<a href="javascript:void(0);" data-url="facrm/customer/index/detail/ids/' + row.customer.id
                            +'" data-area="[&quot;100%&quot;,&quot;100%&quot;]" class="btn-dialog" data-title="'+ row.customer.name+'">'+ row.customer.name+'</a>';
                    },addclass: 'selectpage',
                    extend: 'data-source="facrm/customer/index?filter=%7B\"scene_id\"%3A\"1\"%7D" data-field="name" data-orderBy="id desc"'},

                {field: 'money', title: __('回款金额'), operate: 'BETWEEN', sortable: true},
                {field: 'remark', title: __('备注'), operate: 'LIKE'},

                {field: 'create_user.nickname', title: __('创建人'), operate: false, search: false,
					addclass: 'selectpage',
					extend: 'data-source="facrm/common/selectpage/model/admin?type=all" data-field="nickname" data-orderBy="id desc"'},
                {field: 'create_user_id', title: __('创建人'), visible: false,
					addclass: 'selectpage',
					extend: 'data-source="facrm/common/selectpage/model/admin?type=all" data-field="nickname" data-orderBy="id desc"'},
                {
                    field: 'create_time',
                    title: __('创建时间'),
                    formatter: Table.api.formatter.datetime,
                    operate: 'RANGE',
                    addclass: 'datetimerange',
                    sortable: true,
                    extend: 'autocomplete="off"'

                },
                {
                    field: 'account_id',
                    title: __('回款账户'),
                    formatter: Table.api.formatter.status,
                    searchList: Config.account_list
                },


                {
                    field: 'check_status',
                    title: __('Status'),
                    formatter: function (value, row, index) {
                        var check_status={0: __('待审核'), 1: __('审核中'), 2: __('审核通过'),3: __('审核未通过')};
                        var pay_status={1:'已付款',0:'未付款'};
                        var retrunstr='';
                        if(row['pay_type']==2){
                            retrunstr='(在线'+pay_status[row['pay_status']]+')';
                        }else if(row['pay_type']==3){
                            retrunstr='(续费)';
                        }
                        return check_status[row['check_status']]+retrunstr;
                    },
                    searchList: {0: __('待审核'), 1: __('审核中'), 2: __('审核通过'),3: __('审核未通过')}
                },
                {
                    field: 'operate',
                    title: __('Operate'),
                    table: table,
                    events: Table.api.events.operate,
                    formatter: Table.api.formatter.operate,
                    buttons: [
                        {
                            name: 'log',
                            text: __('日志'),
                            title:  __('审核日志'),
                            classname: 'btn btn-xs btn-success  btn-dialog',
                            url:function (row) {
                                return  'facrm/flow/log/index/flow_id/'+row.flow_id+"/types_id/"+row.id;
                            }

                        },
                        {
                            name: 'payurl',
                            text: '',
                            title: __('线上收款码'),
                            icon: 'fa fa-qrcode',
                            classname: 'btn btn-xs btn-danger  btn-dialog',
                            url: 'facrm/contract/receivables/payurl',
                            hidden:function (row) {
                                if (row.pay_type == 1){
                                    return true;
                                }
                                if (row.pay_status == undefined||row.pay_status==1){
                                    return true;
                                }
                            },
                            success:function () {
                                $(".btn-refresh").trigger('click');
                            }
                        },
                        {
                            name: 'verify',
                            text: '去审核',
                            title: '去审核',
                            classname: 'btn btn-xs btn-primary  btn-dialog',
                            url: 'facrm/backlog/verify/'+"/types/"+"receivables",
                            hidden:function (row) {


                                if (row.flow_admin_id=="") return true;
                                if ($.inArray(row.check_status,[2,3])==1)return true;
                                var admin_id_arr = row.flow_admin_id.split(',');
                                if ($.inArray(Config.admin_id+"",admin_id_arr)==-1)return true;

                                return  false
                            }

                        },
                    ],
                }

            ];
            if (Config.fields && Object.keys(Config.fields).length > 0) {
                var fields = JSON.parse(Config.fields);
                var start = 10;
                for (var i = 0; i < fields.length; i++) {
                    if (fields[i].hasOwnProperty('formatter'))
                        fields[i].formatter = eval(fields[i].formatter);
                    if (fields[i].hasOwnProperty('events'))
                        fields[i].events = eval(fields[i].events);

                    columnss.splice(start + i, 0, fields[i]);
                }
            }


            // 初始化表格
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                pk: 'id',
                sortName: 'id',
                columns: [
                    columnss
                ],
                //启用固定列
                fixedColumns: true,
                //固定右侧列数
                fixedRightNumber: 1,
                searchFormVisible:true, //打开搜索
                onLoadSuccess: function () {
                    // 载入成功时执行
                    loadSuccess("receivables")
                },
                onColumnSwitch: function () {
                    // 切换列时执行columnSwitch方法
                    columnSwitch("receivables","receivables_table")
                },
            });

            // 为表格绑定事件
            Table.api.bindevent(table);
        },
        lists:function(){
            Controller.index({index_url:'facrm/contract/receivables/lists','scene_id':'owner'});
        },
        add: function () {
            Controller.api.bindevent();
            Controller.api.selectcontracts();
            $("#number-create").on("click", function(){
                //{:Y}{:m}{:d}{:h}{:i}{:s}{:rand}
                var vNow = new Date(),sNow='';
                sNow=Config.rprefix.replace('{:Y}', vNow.getFullYear());
                sNow=sNow.replace('{:m}', PrefixZero(vNow.getMonth() + 1, 2));
                sNow=sNow.replace('{:d}', PrefixZero(vNow.getDate(),2));
                sNow=sNow.replace('{:h}', PrefixZero(vNow.getHours(),2));
                sNow=sNow.replace('{:i}', vNow.getMinutes());
                sNow=sNow.replace('{:s}', vNow.getSeconds());
                sNow=sNow.replace('{:rand}', PrefixZero(vNow.getMilliseconds(),6));
                $("input[name^='row[number]']").val(sNow);
            });
            function PrefixZero(num, n) {
                return (Array(n).join(0) + num).slice(-n);
            }
            Form.api.bindevent($("form[role=form]"), function (data) {
                parent.$("#table").bootstrapTable("refresh");
                if (data.pay_type==2){
                    parent.Fast.api.open('facrm/contract/receivables/payurl/ids/'+data.receivables_id,'线上收款码');
                }else{
                    parent.Layer.alert(__("添加成功"),{zIndex: Layer.zIndex+10000,});//置顶
                }
                return true;
            });

        },
        receivablesadd: function () {
            Controller.add();
        },
        edit: function () {
            Controller.api.bindevent();

        },
        detail:function(){
            Controller.api.bindevent();
            Table.api.init({
                extend: {
                    index_url: 'facrm/operatelog/index/receivable_id/'+ids,
                    del_url: 'facrm/operatelog/del',
                }
            });
            var operatelog  = $("#operatelog");
            operatelog.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                pk: 'id',
                sortName: 'id',
                toolbar: '#toolbar-files',
                //禁用默认搜索
                search: false,
                //启用普通表单搜索
                commonSearch: false,
                //可以控制是否默认显示搜索单表,false则隐藏,默认为false
                searchFormVisible: false,
                //分页大小
                pageSize: 10,
                showColumns: false,
                showToggle: false,
                showExport: false,
                showSearch: false,
                columns: [
                    [
                        {field: 'title', title: __('说明'), operate: false},
                        {field: 'nickname', title: __('员工'), formatter:function (value,row) {
                                return value+"("+row.admin_id+")";
                            }},
                        {field: 'create_time', title: __('创建时间'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true},
                        {
                            field: 'operate', title: __('Operate'), table: operatelog,
                            events: Table.api.events.operate,
                            buttons: [{
                                name: 'detail',
                                text: __('Detail'),
                                icon: 'fa fa-list',
                                classname: 'btn btn-info btn-xs btn-detail btn-dialog',
                                url: 'facrm/operatelog/detail'
                            }],
                            formatter: Table.api.formatter.operate
                        }
                    ]
                ],
            });
        },
        selectcontract:function(){
            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: 'facrm/contract/receivables/selectcontract',
                    add_url: '',
                    edit_url: '',
                    del_url: '',
                    multi_url: '',
                    table: '',
                }
            });
            var table = $("#table");
            //在普通搜索渲染后
            table.on('post-common-search.bs.table', function (event, table) {
                $(".commonsearch-table select[name=scene_id]").val('owner');
            });
            // 初始化表格
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                pk: 'id',
                sortName: 'id',
                columns: [
                    [
                        {field: 'id', title: 'ID'},
                        {
                            field: 'scene_id',
                            title: __('场景'),
                            visible: false,
                            formatter: function (v, r) {
                                return scene_list[v];
                            }, searchList: scene_list
                        },
                        {field: 'number', title: __('合同编号'), operate: "LIKE",  align: 'left', formatter : function (value, row, index) {
                                return '<a href="javascript:void(0);" data-url="facrm/contract/index/detail/ids/' + row.id
                                    +'" data-area="[&quot;100%&quot;,&quot;100%&quot;]" class="btn-dialog" data-title="'+ value+'">'+ value+'</a>';
                            }},
                        {field: 'name', title: __('合同名称'), operate: "LIKE"},

                        {field: 'customer_id', title: __('客户名称'), search: false,  align: 'left', formatter : function (value, row, index) {
                                if (!row.customer) return '-';
                                return '<a href="javascript:void(0);" data-url="facrm/customer/index/detail/ids/' + row.customer.id
                                    +'" data-area="[&quot;100%&quot;,&quot;100%&quot;]" class="btn-dialog" data-title="'+ row.customer.name+'">'+ row.customer.name+'</a>';
                            },addclass: 'selectpage',
                            extend: 'data-source="facrm/customer/index?filter=%7B\"scene_id\"%3A\"1\"%7D" data-field="name" data-orderBy="id desc"'},

                        {field: 'money', title: __('合同金额'), operate: 'BETWEEN', sortable: true},
                        {field: 'remark', title: __('备注'), operate: 'LIKE'},
                        {
                            field: 'order_time',
                            title: __('下单时间'),
                            formatter: Table.api.formatter.datetime,
                            operate: 'RANGE',
                            addclass: 'datetimerange',
                            sortable: true,
							extend: 'autocomplete="off"'	
                        },
                        {field: 'owner_user.nickname', title: __('负责人'), operate: false, search: false},
                        {field: 'owner_user_id', title: __('负责人'), visible: false,
							addclass: 'selectpage',
							extend: 'data-source="facrm/common/selectpage/model/admin?type=all" data-field="nickname" data-orderBy="id desc"'},
                        {
                            field: 'update_time',
                            title: __('更新时间'),
                            formatter: Table.api.formatter.datetime,
                            operate: 'RANGE',
                            addclass: 'datetimerange',
                            sortable: true,
							extend: 'autocomplete="off"'
                        },
                        {
                            field: 'check_status',
                            title: __('Status'),
                            formatter: Table.api.formatter.status,
                            searchList: {0: __('待审核'), 1: __('审核中'), 2: __('审核通过'),3: __('审核未通过')},
                        },
                        {
                            field: 'operate', title: __('Operate'), events: {
                                'click .btn-chooseone': function (e, value, row, index) {
                                    Fast.api.close(row);
                                },
                            }, formatter: function () {
                                return '<a href="javascript:;" class="btn btn-danger btn-chooseone btn-xs"><i class="fa fa-check"></i> ' + __('Choose') + '</a>';
                            }
                        }

                    ]
                ],
                //启用固定列
                fixedColumns: true,
                //固定右侧列数
                fixedRightNumber: 1,
            });

            // 为表格绑定事件
            Table.api.bindevent(table);

        },
        recyclebin: function () {
            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: 'facrm/contract/receivables/recyclebin',
                }
            });


            var table = $("#table");
            //在普通搜索渲染后
            table.on('post-common-search.bs.table', function (event, table) {
            });

            var columnss = [
                {checkbox: true},
                {field: 'id', title: 'ID'},
                {field: 'number', title: __('回款编号'), operate: "LIKE"},
                {field: 'contract.number', title: __('合同编号'), operate: false},
                {field: 'contract.name', title: __('合同名称'), operate: false},
                {field: 'contract_id', title: __('合同'), visible: false,
					addclass: 'selectpage',
					extend: 'data-source="facrm/contract/index" data-field="name" data-orderBy="id desc"'},
                {field: 'customer.name', title: __('客户名称'), operate: false, search: false},
                {field: 'customer_id', title: __('客户'), visible: false,
					addclass: 'selectpage',
					extend: 'data-source="facrm/customer/index?filter=%7B\"scene_id\"%3A\"1\"%7D" data-field="name" data-orderBy="id desc"'},
                {field: 'money', title: __('回款金额'), operate: 'BETWEEN', sortable: true},
                {field: 'remark', title: __('备注'), operate: 'LIKE'},
                {field: 'create_user.nickname', title: __('创建人'), operate: false, search: false},
                {field: 'create_user_id', title: __('创建人'), visible: false,
							addclass: 'selectpage',
							extend: 'data-source="facrm/common/selectpage/model/admin?type=all" data-field="nickname" data-orderBy="id desc"'},
                {
                    field: 'delete_time',
                    title: __('删除时间'),
                    formatter: Table.api.formatter.datetime,
                    operate: 'RANGE',
                    addclass: 'datetimerange',
                    sortable: true,
					extend: 'autocomplete="off"'
                },
                {
                    field: 'check_status',
                    title: __('Status'),
                    formatter: Table.api.formatter.status,
                    searchList: {0: __('待审核'), 1: __('审核中'), 2: __('审核通过'),3: __('审核未通过')}
                },
                {
                    field: 'operate',
                    width: '130px',
                    title: __('Operate'),
                    table: table,
                    events: Table.api.events.operate,
                    buttons: [
                        {
                            name: 'Restore',
                            text: __('Restore'),
                            classname: 'btn btn-xs btn-info btn-ajax btn-restoreit',
                            icon: 'fa fa-rotate-left',
                            url: 'facrm/contract/receivables/restore',
                            refresh: true
                        },
                        {
                            name: 'Destroy',
                            text: __('Destroy'),
                            classname: 'btn btn-xs btn-danger btn-ajax  btn-destroyit',
                            icon: 'fa fa-times',
                            url: 'facrm/contract/receivables/destroy',
                            refresh: true
                        }
                    ],
                    formatter: Table.api.formatter.operate
                }
            ];

            // 初始化表格
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                pk: 'id',
                sortName: 'id',
                columns: [
                    columnss
                ]
            });
            // 为表格绑定事件
            Table.api.bindevent(table);
        },
        payurl:function(){
            require.config({
                paths: {
                    'clipboard': '../addons/facrm/js/clipboard.min',
                },
            });
            require(['clipboard'], function (ClipboardJS) {
                //点击复制
                var clipboard = new ClipboardJS('.btn-copy', {
                    text: function () {
                        return $('#output').val();
                    }
                });
                clipboard.on('success', function (e) {
                    Layer.msg("复制成功");
                    e.clearSelection();
                });
                var clipboardr = new ClipboardJS('.btn-copyr', {
                    text: function () {
                        return $('#routput').val();
                    }
                });
                clipboardr.on('success', function (e) {
                    Layer.msg("复制成功");
                    e.clearSelection();
                });

            });

        },
        api: {
            bindevent: function () {
                Form.api.bindevent($("form[role=form]"), function (data) {
                    $("#t-contract,#t-receivables,#table").bootstrapTable("refresh");
                    if (data.pay_type==2){
                        parent.Fast.api.open('facrm/contract/receivables/payurl/ids/'+data.receivables_id,'线上收款码');
                    }else{
                        parent.Layer.alert(__("添加成功"),{zIndex: Layer.zIndex+10000,});//置顶
                    }

                    return true;
                });

                //切换
                $("input[type=radio][name='row[config]']").change(function(){
                    var type=$(this).val();
                    if(type==1){
                        $('.table-responsive1').show();
                    }else{
                        $('.table-responsive1').hide();
                    }
                });

                Fast.api.ajax({
                    type: 'GET',
                    url: 'facrm/fields/get_fields_html',
                    data: {source: 'contract_receivables', 'id': ( typeof ids != "undefined")?ids:''}
                }, function (data) {
                    $("#extend").html(data.html);
                    Form.api.bindevent($("#extend"));
                    return false;
                },function () {
                    return false;
                })

            },
            selectcontracts:function () {
                $("#c-customer_id").bind("change",function(){
                    $("#select-resources").html("点击请选择");
                    $("input[name='row[c-contract_id]']").val(0);
                });
                var refreshkey = function (data) {
                   console.log(data);
                    var contracts_id=data.id;
                    $("input[name='row[contract_id]']").val(data.id).trigger("change");
                    $("#select-resources").html(data.name);
                    $('#c-customer_id').val(data.customer_id);
                    $('#c-customer_id').selectPageRefresh();
                };
                $(document).on('click', "#select-resources", function () {
                    var customer_id = $("input[name='row[customer_id]']").val();
                    parent.Backend.api.open($(this).data("url") + "?customer_id=" + customer_id, __('Select'), {callback: refreshkey});
                    return false;
                });
            },
            formatter: {
                thumb: function (value, row, index) {
                    if (!value) return '';
                    value = value === null ? '' : value.toString();
                    var arr = value.split(',');
                    var html = [];
                    $.each(arr, function (i, value) {

                        var reg = /\.(png|jpg|gif|jpeg|webp)$/;
                        if (reg.test(value)) {
                            html.push('<a href="' + Fast.api.cdnurl(value) + '" target="_blank"><img src="' + Fast.api.cdnurl(value) + '" alt="" style="max-height:90px;max-width:120px"></a>');
                        } else {
                            if (row.imagetype == undefined) row.imagetype = /[^\.]+$/.exec(value);
                            html.push('<a href="' + Fast.api.cdnurl(value) + '" target="_blank"><img src="' + Fast.api.fixurl("ajax/icon") + "?suffix=" + row.imagetype + '" alt="" style="max-height:90px;max-width:120px"></a>');
                        }
                    });
                    return html.join(' ');
                },
                url: function (value, row, index) {
                    return '<a href="' + row.fullurl + '" target="_blank" class="label bg-green">' + row.url + '</a>';
                },
                filename: function (value, row, index) {
                    return '<div style="width:180px;margin:0 auto;text-align:center;overflow:hidden;white-space: nowrap;text-overflow: ellipsis;">' + Table.api.formatter.search.call(this, value, row, index) + '</div>';
                },
            }
        }
    };
    return Controller;
});

